home *** CD-ROM | disk | FTP | other *** search
- # ncep.gui - last revision: October 12, 1997
- #
- # Sample widget script for the NCEP/NCAR Re-analysis CDROM.
- # Modify the first line ("chdir") for the location of your CDROM drive.
- #
- # How to invoke this script:
- #
- # At startup. Set the enviroment variable GAGUI with the
- # name of the script file, e.g.,
- #
- # % setenv GAGUI ncep.gui
- #
- # At the GrADS command line prompt. Simply type
- #
- # ga> gui ncep.gui
- #
- # Of course, you must have a version of GrADS built with
- # Athena Widgets support.
- #
- # --
- # (c) 1997 by Arlindo da Silva
- #
- # Permission is granted to any individual or institution to use,
- # copy, or redistribute this software so long as it is not sold for
- # profit, and provided this notice is retained.
- #
- # See also sample.gui, sample2.gui.
- #.........................................................................
-
-
- # Mofify this for the location of your CDROM
- # Win32 Users: Use //d to indicate drive d:
- # ------------------------------------------
- chdir("//d/")
-
-
- # Most "exec" commands are supported
- # ----------------------------------
- reinit
- set gxout shaded
-
-
- # A "label" is an inactive widget which display some text,
- # e.g., an informative title. The first argument, "root"
- # in this case, is the name you give to the widget so that
- # you can refer to it later on
- # -------------------------------------------------------
- MakeLabel(root,"NCEP/NCAR Re-analysis CDROM")
-
- # This command creates a dropdown menu called " File "
- # as usual, the first argument "file" is the name of the
- # widget
- # -------------------------------------------------------
- MakeMenu ( file, " File " )
-
-
- # Once you make a memu, you create its items. For the first item:
- # --------------------------------------------------------------
- MakeMenuItem(open, file, "Open", Load, "open")
-
- # The parameters this particular item are:
- # open the name of the item widget
- # file the menu the item belongs to (see MakeMenu above)
- # "Open" This is the text it displays on the screen
- # Load this is the callback name, i.e., the widget invokes
- # this function when pressed. This particular callback
- # pops up a "file finder" widget, and after the user
- # clicks on a file name it executes the grads command
- # "open" (see last argument) on this file. A list
- # of the other available callbacks can be found in the
- # end of this file.
- # "open" Argument to be passed to the callback. In this
- # particular case, it is the GrADS command to be
- # executed on the file.
- # The definition of the other items in this menu follows.
- MakeMenuItem(sdf, file, "SDF Open", Load, "sdfopen")
- MakeMenuItem(xdf, file, "XDF Open", Load, "xdfopen")
- MakeMenuItem(fsel, file, "File Selection ", FileSel, NULL )
- MakeMenuItem(browse,file, "View Text File", Browse, NULL)
- MakeMenuItem(junk, file, "_______________", NULL, NULL )
- MakeMenuItem(exec, file, "Exec", Load, "exec")
- MakeMenuItem(run, file, "Run", Load, "run")
- MakeMenuItem(gui, file, "GUI", Load, "gui")
- MakeMenuItem(junk, file, "_______________", NULL, NULL )
- MakeMenuItem(fresh, file, "Refresh", Cmd, " ")
- MakeMenuItem(init, file, "Reinit", Cmd, "reinit")
- MakeMenuItem(exit, file, "Exit", Cmd, "quit")
-
-
- # A menu for gx metafile printing related commands
- # ------------------------------------------------
- MakeMenu ( print, " Print " )
- MakeMenuItem(printit, print, "Print", Cmd, "print")
- MakeMenuItem(enable, print, "Enable Print", Load, "enable print")
- MakeMenuItem(disable, print, "Disable Print", Cmd, "disable print")
-
- # A menu with assorted internal options
- # -------------------------------------
- MakeMenu ( options, " Options " )
- MakeMenuItem(shade, options, "Shaded", Cmd, "set gxout shaded" )
- MakeMenuItem(cont, options, "Contour", Cmd, "set gxout contour" )
- MakeMenuItem(grfill, options, "Grid Fill", Cmd, "set gxout grfill" )
- MakeMenuItem(grvals, options, "Grid Values", Cmd, "set gxout grid" )
- MakeMenuItem(vec, options, "Vector", Cmd, "set gxout vector" )
- MakeMenuItem(strm, options, "Streamlines", Cmd, "set gxout stream" )
- MakeMenuItem(bar, options, "Bar Chart", Cmd, "set gxout bar" )
- MakeMenuItem(line, options, "Line Plot", Cmd, "set gxout line" )
- MakeMenuItem(barb, options, "Wind Barbs", Cmd, "set gxout barb" )
- MakeMenuItem(junk, options, "_______________", NULL, NULL )
- MakeMenuItem(ci, options, "Contour Interval", CmdStr, "set cint" )
- MakeMenuItem(tit, options, "Draw Title", CmdStr, "draw title " )
- MakeMenuItem(cbar, options, "Color Bar", Cmd, "run cbarn" )
-
-
- # Creates simple buttons. Buttons work pretty much like menu items
- # but they do not belong to any menu and are directly clickable.
- # ------------------------------------------------------------------
- MakeButton( clear, "Clear", Cmd, "clear" )
- MakeButton( quit, "Quit", Cmd, "quit" )
- MakeButton( prompt, " ga> ", CmdWin, NULL )
- MakeButton( rein, "Reinit", Cmd, "reinit")
-
- # A menu for defining GrADS dimensions. This is very crude right now.
- # I will be developing a specific callback with rubber bands
- # etc. for these functions. Stay tuned.
- # ------------------------------------------------------------------
- MakeMenu( dim, "Dim")
- MakeMenuItem(lat, dim, "Latitude", CmdStr, "set lat " )
- MakeMenuItem(lon, dim, "Longitude", CmdStr, "set lon " )
- MakeMenuItem(lev, dim, "Level", CmdStr, "set lev " )
- MakeMenuItem(time, dim, "Time", CmdStr, "set time " )
- MakeMenuItem(junk, dim, "_________", NULL, NULL )
- MakeMenuItem(x, dim, "x", CmdStr, "set x " )
- MakeMenuItem(y, dim, "y", CmdStr, "set y " )
- MakeMenuItem(z, dim, "z", CmdStr, "set z " )
- MakeMenuItem(t, dim, "t", CmdStr, "set t " )
-
- # Frequently used buttons (and toggle)
- # -----------------------------------
- MakeButton( var, "Var", VarSel, NULL )
- MakeToggle( hold, "Hold", FALSE, NULL, Toggle, "hold" )
- MakeButton( prev, " << ", Display, "<<" )
- MakeButton( play, "Display", Display, "DISPLAY" )
- MakeButton( next, " >> ", Display, ">>" )
-
-
- # CDROM specific menu's
- # ---------------------
- MakeMenu(cc, "Climate")
- MakeMenuItem(c1, cc, "Z u v T q ...", Open, "open climate/prflcl" )
- MakeMenuItem(c2, cc, "Heat Fluxes", Open, "open climate/heatcl" )
- MakeMenuItem(c3, cc, "Potential Vorticity", Open, "open climate/ipvcl" )
-
- MakeMenu(mm, "Monthly")
- MakeMenuItem(m1, mm, "Z u v T q ...", Open, "open monthly/prfl" )
- MakeMenuItem(m2, mm, "Potential Vorticity", Open, "open monthly/ipv" )
-
- MakeMenu(hd, "Z")
- MakeMenuItem(xxx, hd, " Daily", NULL, NULL )
- MakeMenuItem(xxx, hd, "_________", NULL, NULL )
- MakeMenuItem(hd5, hd, "Z 30 hPa", Open, "open daily/z30" )
- MakeMenuItem(hd4, hd, "Z 200 hPa", Open, "open daily/z200" )
- MakeMenuItem(hd3, hd, "Z 500 hPa", Open, "open daily/z500" )
- MakeMenuItem(hd2, hd, "Z 700 hPa", Open, "open daily/z700" )
- MakeMenuItem(hd1, hd, "Z 850 hPa", Open, "open daily/z850" )
-
- MakeMenu(ud, "u")
- MakeMenuItem(xxx, ud, " Daily", NULL, NULL )
- MakeMenuItem(xxx, ud, "_________", NULL, NULL )
- MakeMenuItem(ud5, ud, "U 30 hPa", Open, "open daily/u30" )
- MakeMenuItem(ud4, ud, "U 200 hPa", Open, "open daily/u200" )
- MakeMenuItem(ud3, ud, "U 500 hPa", Open, "open daily/u500" )
- MakeMenuItem(ud2, ud, "U 700 hPa", Open, "open daily/u700" )
- MakeMenuItem(ud1, ud, "U 850 hPa", Open, "open daily/u850" )
-
- MakeMenu(vd, "v")
- MakeMenuItem(xxx, vd, " Daily", NULL, NULL )
- MakeMenuItem(xxx, vd, "_________", NULL, NULL )
- MakeMenuItem(vd5, vd, "V 30 hPa", Open, "open daily/v30" )
- MakeMenuItem(vd4, vd, "V 200 hPa", Open, "open daily/v200" )
- MakeMenuItem(vd3, vd, "V 500 hPa", Open, "open daily/v500" )
- MakeMenuItem(vd2, vd, "V 700 hPa", Open, "open daily/v700" )
- MakeMenuItem(vd1, vd, "V 850 hPa", Open, "open daily/v850" )
-
- MakeMenu(td, "T")
- MakeMenuItem(xxx, td, " Daily", NULL, NULL )
- MakeMenuItem(xxx, td, "_________", NULL, NULL )
- MakeMenuItem(td5, td, "T 30 hPa", Open, "open daily/t30" )
- MakeMenuItem(td4, td, "T 200 hPa", Open, "open daily/t200" )
- MakeMenuItem(td3, td, "T 500 hPa", Open, "open daily/t500" )
- MakeMenuItem(td2, td, "T 700 hPa", Open, "open daily/t700" )
- MakeMenuItem(td1, td, "T 850 hPa", Open, "open daily/t850" )
- MakeMenuItem(td0, td, "T at 2m", Open, "open daily/t2m" )
-
- MakeMenu(qd, "q")
- MakeMenuItem(xxx, qd, " Daily", NULL, NULL )
- MakeMenuItem(xxx, qd, "_________", NULL, NULL )
- MakeMenuItem(qd3, qd, "Q 500 hPa", Open, "open daily/q500" )
- MakeMenuItem(qd2, qd, "Q 700 hPa", Open, "open daily/q700" )
- MakeMenuItem(qd1, qd, "Q 850 hPa", Open, "open daily/q850" )
- MakeMenuItem(qd0, qd, "Q at 2m", Open, "open daily/q2m" )
-
- MakeMenu(sd, "Sfc")
- MakeMenuItem(xxx, sd, " Daily", NULL, NULL )
- MakeMenuItem(xxx, sd,"__________________", NULL, NULL )
- MakeMenuItem(sd1, sd, "Sea Level Pressure", Open, "open daily/mslp" )
- MakeMenuItem(sd2, sd, "10 meter u-wind", Open, "open daily/u10m" )
- MakeMenuItem(sd3, sd, "10 meter v-wind", Open, "open daily/v10m" )
- MakeMenuItem(sd4, sd, "Zonal stress", Open, "open daily/uflx" )
- MakeMenuItem(sd5, sd, "Meridional stress", Open, "open daily/vflx" )
- MakeMenuItem(xxx, sd,"__________________", NULL, NULL )
- MakeMenuItem(sd6, sd, "Precipitation", Open, "open daily/prate" )
- MakeMenuItem(sd7, sd, "Latent Heat Flux", Open, "open daily/lhtfl" )
- MakeMenuItem(sd8, sd, "Sensible Heat Flux", Open, "open daily/" )
- MakeMenuItem(xxx, sd,"__________________", NULL, NULL )
- MakeMenuItem(sd9, sd, "Shortwave [down]", Open, "open daily/dswrfsfc" )
- MakeMenuItem(sda1, sd, "Longwave [down]", Open, "open daily/dlwrfsfc" )
- MakeMenuItem(sda2, sd, "Shortwave [up]", Open, "open daily/uswrfsfc" )
- MakeMenuItem(sda3, sd, "Longwave [up]", Open, "open daily/ulwrfsfc" )
-
- MakeMenu(hh, "Help")
- MakeMenuItem(h1, hh, "About this Software", NULL, NULL )
- MakeMenuItem(h2, hh, "About this CDROM", Browse, "read.ams")
- MakeMenuItem(h3, hh, "BAMS Article", Browse, "paper/bamspapr.asc")
-
-
- # Once you define buttons and menus you may want to enforce their
- # relative position. The very first button is always placed at the
- # upper left corner.
- # ----------------------------------------------------------------
-
- # First row
- SetWidgetPos(file, PLACE_UNDER, root, NO_CARE, NULL)
- SetWidgetPos(print, PLACE_UNDER, root, PLACE_RIGHT, file )
- SetWidgetPos(options, PLACE_UNDER, root, PLACE_RIGHT, print )
- SetWidgetPos(dim, PLACE_UNDER, root, PLACE_RIGHT, options )
- SetWidgetPos(rein, PLACE_UNDER, root, PLACE_RIGHT, dim )
- SetWidgetPos(prompt, PLACE_UNDER, root, PLACE_RIGHT, rein )
-
- # Second row
- SetWidgetPos(cc, PLACE_UNDER, file, NO_CARE, NULL)
- SetWidgetPos(mm, PLACE_UNDER, file, PLACE_RIGHT, cc)
- SetWidgetPos(hd, PLACE_UNDER, file, PLACE_RIGHT, mm)
- SetWidgetPos(ud, PLACE_UNDER, file, PLACE_RIGHT, hd)
- SetWidgetPos(vd, PLACE_UNDER, file, PLACE_RIGHT, ud)
- SetWidgetPos(td, PLACE_UNDER, file, PLACE_RIGHT, vd)
- SetWidgetPos(qd, PLACE_UNDER, file, PLACE_RIGHT, td)
- SetWidgetPos(sd, PLACE_UNDER, file, PLACE_RIGHT, qd)
- SetWidgetPos(hh, PLACE_UNDER, file, PLACE_RIGHT, sd)
-
- # third row
- SetWidgetPos(hold, PLACE_UNDER, cc, NO_CARE, NULL)
- SetWidgetPos(var, PLACE_UNDER, cc, PLACE_RIGHT, hold )
- SetWidgetPos(prev, PLACE_UNDER, cc, PLACE_RIGHT, var )
- SetWidgetPos(play, PLACE_UNDER, cc, PLACE_RIGHT, prev )
- SetWidgetPos(next, PLACE_UNDER, cc, PLACE_RIGHT, play )
- SetWidgetPos(clear, PLACE_UNDER, cc, PLACE_RIGHT, next )
- SetWidgetPos(quit, PLACE_UNDER, cc, PLACE_RIGHT, clear )
-
-
- # You can optionally select a font for ALL widgets
- # ------------------------------------------------
- # GetFont(font,"-*-helvetica-bold-o-normal--*-*-*-*-*-*-*-*" )
- GetFont(font,"-*-helvetica-bold-o-normal--12-*-*-*-*-*-*-*" )
- AllWidgetFont(font)
-
- GetFont(font,"-*-helvetica-bold-o-normal--14-*-*-*-*-*-*-*" )
- SetWidgetFont(root,myfont)
-
-
- # In order to make your widgets appear on the screen you *must*
- # issue this command.
- # -------------------------------------------------------------
- ShowDisplay()
-
-
- # After your widgets appear on the screen, you can set the color
- # of your widgets. The following colors are pre-defined:
- # white, back, red, green, blue, yellow.
- # --------------------------------------------------------------
- GetNamedColor(gray,"grey")
- GetNamedColor(Blue,"LightSkyBlue")
- GetNamedColor(pink,"gold") # pink is actually gold, get it?
- AllFgColor(black)
- AllBgColor(Blue)
- SetBgColor(root,white)
- SetFgColor(root,red)
- SetFgColor(prompt,yellow)
- SetBgColor(prompt,red)
- SetBgColor(prev,pink)
- SetBgColor(play,pink)
- SetBgColor(next,pink)
- SetBgColor(hold,gray)
- SetBgColor(var,gray)
- SetBgColor(clear,gray)
- SetBgColor(rein,gray)
- SetBgColor(quit,gray)
-
-
- # And you must call this function at the end of your first GUI script.
- # This instructs the X Toolkit to enter an infinite loop, monitoring
- # keyboard and mouse events. Repeating: you *must* call MainLoop().
- # -------------------------------------------------------------------
- MainLoop()
-
- #........................................................................
- #
- # APPENDIX: Currently available callback functions
- #
- # Browse Opens a text file, such as a help file, on a separate
- # window.
- # Cmd Executes a generic GrADS command
- # CmdStr Like Cmd, but the user is prompted for an additional
- # string to be appended to the GrADS command.
- # CmdWin Invokes a window for GrADS command line interface.
- # User can click on past commands from a list.
- # CmdLine Invokes the standard GrADS command line interface.
- # When the command line is active the other widgets
- # are not available (may be fixed in the future).
- # Display A generic callback for displaying the current variable
- # (or expression) set with VarSel. The options are:
- # << decrements time and executes display
- # PLAY starts animation from current to last time
- # DISPLAY just executes display
- # >> increments time and executes display
- # If the "hold" toggle state is OFF (the default),
- # the screen is cleared before displaying.
- # Edit Like browse, but the user can edit the file. This simple
- # text editor is integrated with GrADS, providing a very
- # elementary Integrated Development Enviroment (IDE) for
- # GrADS scripts. In particular, the script being edited
- # can be executed by clicking on a button (not
- # implemented yet).
- # FileSel Pops up a scrollable list and asks the user to selected
- # a file among the currently opened GrADS files (including
- # SDFs). The selected file becomes the default.
- # Load Pops up a "file finder" widget, and after the user
- # clicks on a file name it executes a GrADS command
- # specified as the last argument. In case of "open" or
- # "sdfopen" the files becomes the default, and the
- # user is asked to select a variable from this file.
- # Open Similar to Load, but the file name must be specified.
- # Toggle Turn internal options ON/OFF. The only internal
- # option currently supported is "hold". This callback is
- # usually used with MakeToggle(), see example above.
- # VarSel Pops up a scrollable list and asks the user to selected
- # a variable from the default file. The user can also
- # type a generic GrADS expression instead of selecting
- # a single variable.
- # NULL Does not do anything, used for inactive buttons.
- #
- #........................................................................
-
-
-